package com.itheima.finaldemo;

public class FinalDemo {
    public static String name = "itcast";
    //final修饰静态变量，称之为常量，可以记住一个固定值,大写下划线连接
    final public static int YOU_AGE = 18;//修饰常量不能改，修饰引用类型变量地址不能改
    final public static int[] arr ={1,2,3};
    public static void main(String[] args) {
        //1.修饰类：最终类，不能被继承
        //2.修饰方法：最终方法，不能被重写
        //3.修饰变量：最终变量，不能被修改 有且只能被赋值一次
        /**
         * 变量有哪些
         * 1.成员变量
         *  a.静态成员变量
         *  b.实例成员变量
         * 2.局部变量 （for循环中的i）
         */
        final int num = 10;
// num = 20;
        buy(1);
        arr[0] = 2;
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
        //2.常量： 使用static final 修饰的成员变量称为变量 编译之后会宏替换，也就是原本的值会被替换成常量值
        System.out.println(Constant.NAME);
        System.out.println(Constant.NAME);
        System.out.println(Constant.NAME);
        System.out.println(Constant.NAME);
        System.out.println(Constant.NAME);

    }

    public static void buy( final double z) {
//      z= 2;//第二次赋值报错
    }
}

//1.修饰类：最终类，不能被继承
final class A {
}

//class B extends A{ }
//2.修饰方法：最终方法，不能被重写
class C {
    //2.修饰方法：最终方法，不能被重写
    public final int num = 1;

    final void show() {
        System.out.println("show");
    }
}

class D extends C {

//    @Override
//    void show(){  //overridden method is final
//        System.out.println("show");
//    }
}